package bombita.vista.Titiritero;

import java.awt.Color;

import bombita.modelo.CosaDelMapa;
import bombita.modelo.Interactuador;
import bombita.modelo.Salida;
import bombita.modelo.Items.*;
import bombita.modelo.Municiones.*;
import bombita.modelo.Obstaculos.*;
import bombita.modelo.Personajes.*;
import ar.uba.fi.algo3.titiritero.AdaptadorPosicionable;
import ar.uba.fi.algo3.titiritero.Dibujable;
import ar.uba.fi.algo3.titiritero.Posicionable;
import ar.uba.fi.algo3.titiritero.vista.Cuadrado;
import ar.uba.fi.algo3.titiritero.vista.Imagen;

public class FabricaDibujables implements Interactuador
{
	private String pathImagen = null;
	
	public Dibujable crear(CosaDelMapa base)
	{
		try {
			base.interactuarCon(this);
		} catch (NoPasarException e) {}
		
		Dibujable cosa;
		if (pathImagen == null) {
			cosa = new Cuadrado(50, 50, Color.yellow);
		} else {
			Imagen img = new Imagen();
			img.setNombreArchivoImagen(pathImagen);
			cosa = img;
		}
		Posicionable adaptado = new AdaptadorPosicionable(base.getPosicion(), 50, 50, -1, -1);
		cosa.setPosicionable(adaptado);
		return cosa;
	}

	@Override
	public void interactuarConSalida(Salida unaCosa)
	{
		pathImagen = "/resource/img/Salida.png";
	}

	@Override
	public void interactuarConItem(Item unaCosa)
	{
		pathImagen = "/resource/img/Item.png";
	}

	@Override
	public void interactuarConItemTimer(ItemTimer unaCosa)
	{
		this.interactuarConItem(unaCosa);
	}

	@Override
	public void interactuarConItemChala(ItemChala unaCosa)
	{
		this.interactuarConItem(unaCosa);
	}

	@Override
	public void interactuarConItemToletole(ItemToletole unaCosa)
	{
		this.interactuarConItem(unaCosa);
	}

	@Override
	public void interactuarConProyectil(Proyectil unaCosa)
	{
		switch (unaCosa.getDireccion()) {
		case ARRIBA:
			pathImagen = "/resource/img/FlechaAbajo.png";
			break;
		case ABAJO:
			pathImagen = "/resource/img/FlechaArriba.png";
			break;
		case IZQUIERDA:
			pathImagen = "/resource/img/FlechaIzquierda.png";
			break;
		case DERECHA:
			pathImagen = "/resource/img/FlechaDerecha.png";
			break;
		}
	}

	@Override
	public void interactuarConLopezProyectil(LopezProyectil unaCosa)
	{
		this.interactuarConProyectil(unaCosa);
	}

	@Override
	public void interactuarConBomba(Bomba unaCosa)
	{
		pathImagen = "/resource/img/Bomba.png";
	}

	@Override
	public void interactuarConLopezBomba(LopezBomba unaCosa)
	{
		this.interactuarConBomba(unaCosa);
	}

	@Override
	public void interactuarConMolotov(Molotov unaCosa)
	{
		this.interactuarConBomba(unaCosa);
	}

	@Override
	public void interactuarConToletole(Toletole unaCosa)
	{
		pathImagen = "/resource/img/BombaToletole.png";
	}

	@Override
	public void interactuarConObstaculo(Obstaculo unaCosa)
	{
		pathImagen = "/resource/img/Ladrillo.png";
	}

	@Override
	public void interactuarConAcero(Acero unaCosa)
	{
		pathImagen = "/resource/img/Acero.png";
	}
	
	@Override
	public void interactuarConCemento(Cemento unaCosa)
	{
		pathImagen = "/resource/img/Cemento.png";
	}

	@Override
	public void interactuarConLadrillo(Ladrillo unaCosa)
	{
		pathImagen = "/resource/img/Ladrillo.png";
	}

	@Override
	public void interactuarConPersonaje(Personaje unaCosa) throws NoPasarException
	{
		pathImagen = "/resource/img/Cecilio.png";
	}

	@Override
	public void interactuarConBombita(Bombita unaCosa)
	{
		pathImagen = "/resource/img/Bombita.png";
	}

	@Override
	public void interactuarConCecilio(Cecilio unaCosa)
	{
		pathImagen = "/resource/img/Cecilio.png";
	}

	@Override
	public void interactuarConLopez(Lopez unaCosa)
	{
		pathImagen = "/resource/img/Lopez.png";
	}

	@Override
	public void interactuarConLopezVolador(LopezVolador unaCosa)
	{
		pathImagen = "/resource/img/LopezVolador.png";
	}

	@Override
	public void interactuarConExplosion(Explosion unaCosa)
	{
		pathImagen = "/resource/img/Explosion.png";
	}

	@Override
	public void interactuarConExplosionNormal(ExplosionNormal unaCosa)
	{
		this.interactuarConExplosion(unaCosa);
	}

	@Override
	public void interactuarConExplosionToletole(ExplosionToletole unaCosa)
	{
		pathImagen = "/resource/img/ExplosionToletole.png";
	}
}
